package turtle;
import java.awt.Color;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class Snake implements KeyListener{
  public static final int DICK=5;
  public static final int LANG=20;
  private Turtle[] spieler;
  private int anzspieler;
  private Turtle rand;

  public Snake(boolean allein){
    rand=new Turtle();
    anzspieler=allein?1:2;
    spieler=new Turtle[2];
    spieler[0]=new Turtle(); spieler[0].setPen(DICK); spieler[0].setColor(Color.RED);
    spieler[1]=new Turtle(); spieler[1].setPen(DICK); spieler[1].setColor(Color.BLUE);
    Turtle.show();
    Turtle.addKeyListener(this);
  }

  public void keyPressed(KeyEvent e){
    switch(e.getKeyCode()){
    case KeyEvent.VK_RIGHT: spieler[0].turnTo(0);   break;
    case KeyEvent.VK_LEFT:  spieler[0].turnTo(180); break;
    case KeyEvent.VK_UP:    spieler[0].turnTo(90);  break;
    case KeyEvent.VK_DOWN:  spieler[0].turnTo(-90); break;
    case KeyEvent.VK_D:     spieler[1].turn(-45); break;
    case KeyEvent.VK_A:     spieler[1].turn(45);  break;
    }
  }

  public void keyReleased(KeyEvent e){}
  public void keyTyped(KeyEvent e){}

  public void anDenStart(){
    spieler[0].moveTo(10, 10); spieler[0].turnTo(0);
    spieler[1].moveTo(-10, -10); spieler[1].turnTo(180);
    rand.moveTo(-200, -200);
    rand.turnTo(0);
    rand.setColor(Color.DARK_GRAY);
    rand.setPen(5);
    rand.line(400); rand.turn(90);
    rand.line(300); rand.turn(90);
    rand.line(400); rand.turn(90);
    rand.line(300); rand.turn(90);
  }

  public void play(){
    anDenStart();
    int dran=0;
    while(true){
      Turtle t=spieler[dran];
      t.line(LANG);
      Turtle.show();
      if(t.headCollidesWith(rand)) break;
      if(t.headCollidesWith(spieler[1-dran])) break;
      if(t.headCollidesWith(t)) break;
      dran=anzspieler-1-dran;
      Turtle.sleep(150*(3-anzspieler));
    }
    System.out.println("Spieler "+(dran+1)+" verliert.");
  }

  public static void main(String[] args){
    boolean allein=args.length>0 && "-a".equals(args[0]);
    new Snake(allein).play();
  }
}
